package com.Book.test_1_25_springmvcbook.model;

import com.Book.test_1_25_springmvcbook.enums.ResultCode;
import lombok.Data;

@Data
public class Result<T> {
    // 对于程序的开发, 会提供一个 业务码, 状态码
    private ResultCode code; // 返回 0 就表示成功, -1表示失败,  -2 表示未登录,这里用来强制登录实现内容
    // 有了这个就可以知道 是没有数据还是数据出错了
    // 如果 code 为 200 但是 records为空, 表示 数据库是空的
    // 如果 code = -1 , records也为空, 表示后端出错了
    // 状态码表示后端是否正常响应了
    // 当然业务状态吗这些数都是程序员自己定义的

    private String errMsg;// 错误信息

    private T data; //数据, 把之前全部的返回结果都放到这个data里面

    // 方一些常用的数据
    public static <T> Result<T> success(T data){
        Result result = new Result(); //*
        result.setCode(ResultCode.SUCCESS); //*
        result.setErrMsg("");//*
        result.setData(data); //*
        return result; //*

    }
    public static <T> Result<T> fail(String errMsg){
        Result result = new Result(); //*
        result.setCode(ResultCode.FAIL); //*
        result.setErrMsg(errMsg);//*
        result.setData(null); //*
        return result; //*
    }

    public static <T> Result<T> fail(String errMsg, Object data){
        Result result = new Result(); //*
        result.setCode(ResultCode.FAIL); //*
        result.setErrMsg(errMsg);//*
        result.setData(data); //*
        return result; //*
    }
    public static <T> Result<T> unlogin(){
        // 用户未登录
        Result result = new Result();
        result.setCode(ResultCode.UNLOGIN);
        result.setErrMsg("未登录");
        result.setData(null);
        return result;
    }
}
